<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  // 1.1   reduce
// 参数：接收一个或多个参数
// 作用：向指定数组尾部添加元素
// 返回值：新数组的长度
// 例如：
const arr = ['a', 'b', 'c']
arr.push('d')
console.log(arr) // ['a', 'b', 'c', 'd']

const res = arr.push('e', 'f')
console.log(arr) // ['a', 'b', 'c', 'd', 'e', f]
console.log(res) // 6

//1.2 filter
//参数：回调函数（数组元素，数组索引，数组本身）
//作用：筛选
//返回值：符合条件的元素组成的数组
const arr = [1,2,3,4,6]
arr.filter((item)=>{
    return item > 1 //[2,3,4,6]
})


//1.3 some
//参数：回调函数
//作用：判断
//返回值：布尔值，如果全部都不符合条件返回false
const arr = [1,2,3,4,6]
arr.some(item=> item > 1)//true



// 1.4  every
// 参数：
// 作用：判断 数组中是否 所有元素 都满足条件 (逻辑&&, 全部满足)
// 返回值：方法自身的返回值
          true: 所有满足都满足条件
          false: 有元素不满足条件
// 例如：

let arr = [10,20,30,40,50,]
let res = arr.every( item => item % 2 ==0)
console.log( res )


//1.5 map

// 参数：回调函数
// 作用：处理数据，返回新数组
// 返回值：新数组，与原数组无关
// 例如：
const arr = ['a', 'b', 'c']
console.log(arr.map(item => item)) // ['a', 'b', 'c']


2. 整理出来以下会改变原数组的数组方法


// 2.1 push
// 参数：接收一个或多个参数
// 作用：向指定数组尾部添加元素
// 返回值：新数组的长度
// 例如：
const arr = ['a', 'b', 'c']
arr.push('d')
console.log(arr) // ['a', 'b', 'c', 'd']

const res = arr.push('e', 'f')
console.log(arr) // ['a', 'b', 'c', 'd', 'e', f]
console.log(res) // 6


//2.2.pop
// 参数：
// 作用：方法从一个数组中删除并返回最后一个元素。
// 返回值：从数组中删除的元素（当数组为空时返回undefined）。
const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];

const popped = myFish.pop();

console.log(myFish); // ['angel', 'clown', 'mandarin']

console.log(popped); // 'sturgeon'


//2.3 unshift
// 参数：接收一个或多个参数
// 作用：向指定数组头部添加元素
// 返回值：新数组的长度
// 例如：
const arr = ['a', 'b', 'c']
arr.unshift('d')
console.log(arr) //  ['d'，'a', 'b', 'c']


//2.4 shift
// 参数：接收一个或多个参数
// 作用：向指定数组头部删除第一个元素
// 返回值：新数组的长度
// 例如：
const arr = ['a', 'b', 'c']
arr.shift('a')
console.log(arr) //  [ 'b', 'c']


// 2.5 sort
// 参数：回调函数
// 作用：排序
// 返回值：排序后的数组
// 例如：
const arr = [1, 2, 3]
arr.sort((a,b) => a - b)//升序[1,2,3]
arr.sort((a,b) => b - a)//降序[3,2,1]

// 2.6 reverse
// 参数：无
// 作用：反转数组
// 返回值：反转后的数组
// 例如：
const arr = [1, 2, 3]
arr.reverse()//[3，2，1]
arr.reverse()//[1，2，3]



// 2.7 splice
// 参数：改变指定位置的索引，删除元素个数，添加的元素（可多个）
// 作用：增删数组元素
// 返回值：被删除的元素
// 例如：
const arr = ['a', 'b', 'c']
console.log(arr.splice(1,1)) // ['b']
</body>
</html>